package com.example.onion.hxchat.mvvm;

import android.app.Application;

import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;


import com.example.onion.hxchat.room.repositorywc.UserRepository;
import com.example.onion.hxchat.room.wcdatabase.MyDataBaseWc;
import com.example.onion.hxchat.room.entity.User;

import java.util.List;


//ViewModel 唯一的责任是管理 UI 数据。一个 ViewModel 绝不能引用视图，有生命周期的，
// 持有 Activity 的 context 引用的类
public class UserViewModel extends AndroidViewModel {

    //将“秒钟”这个字段用MutableLiveData包装起来
    //LiveData是一个抽象类，不能直接使用，所以通常我们使用它的直接子类MutableLiveData。
    private LiveData<List<User>> users;
    private MyDataBaseWc myDatabase;
    UserRepository repository;
    public UserViewModel(@NonNull Application application) {
        super(application);
        repository = new UserRepository(application);
        }
    //过LiveData.observe()方法对LiveData包装的数据进行观察，
    // 反过来，当我们想要修改LiveData包装的数据时，
    // 可通过LiveData.postValue()/LiveData.setValue()来完成。
    // postValue()是在非UI线程中使用，如果在UI线程中，则使用setValue()方法。


    public User getUserById(String id)
    {
        return repository.getUserById(id);
    }
    public void insertUser(User... users)
    {
        repository.insertUsers(users);
    }
    public void deleteALltUser()
    {
        repository.deleteAllUsers();
    }

    public LiveData<List<User>> getAllUsers()
    {
        return repository.getUsers();
    }



    //ViewModel用于存放页面所需的各种数据，它还包括一些业务逻辑等

    //LiveData的作用就是，在ViewModel中的数据发生变化时通知页面。

    @Override
    protected void onCleared() {
        super.onCleared();
    }
}
